fn main() {
    let _d1 = TestDrop{
        data:String::from("111")
    };
    let _d2 = TestDrop{
        data:String::from("222")
    };
    // 提前drop _d1,而不是等到最后。显示_d1.drop()是会报错的，这不会阻止程序默认的drop,就会出现double free问题，释放2次内存！！
    drop(_d1);
    println!("create.")

}

struct TestDrop{
    data:String,
}


impl Drop for TestDrop{
    fn drop(&mut self) {
       println!("drop {}", self.data);

    }
}
